package com.ruoyi.lottery.utils;

import com.ruoyi.lottery.domain.LotAward;

import java.math.BigDecimal;
import java.util.List;
import java.util.Random;

/** 中奖工具类 */
public class AwardUtils {

    /**
     * 设置权重: 为每个商品设置自己的区间
     * @param list  商品集合
     */
    public static void setWeightLottery(List<LotAward> list) {

        int size = list.size();

        // 默认奖品中奖概率加起来 ≤ 100% (不足100的,剩下的为谢谢惠顾)
        for (int i = 1; i < size; i++) {
            LotAward lotAward = list.get(i);

            lotAward.setProbability(lotAward.getProbability().add(list.get(i - 1).getProbability()));
        }
    }

    public static LotAward proceedLottery(List<LotAward> list) {

        // 生成一个随机数
        double randomNumber = new Random().nextDouble();

        for (LotAward lotAward : list) {
            // 那生成的随机数 去集合里的奖品进行比较
            // 返回的结果有三种: -1: 随机数小于集合里的对象; 0: 二者相等; 1:随机数大于
            int rest = new BigDecimal(randomNumber + "").compareTo(lotAward.getProbability());

            if (rest < 0) {
                // 表示该随机数落在了该范围内 ===> 中奖了
                return lotAward;
            }
        }

        // 如果返回的对象 == null ===> 表示谢谢惠顾
        return null;
    }
}
